/**
 * 使用全局发布订阅模式的好处
 * -相当于给 发布者和订阅者之间家了一个中介
 * -订阅者不需要关心 具体的对象上是否有该类消息
 * 
 * 缺点
 * -全局上太多的关系
 * -模块与模块的关系不清楚
 */


var Event = (function(){
    var clientList = {},
        listen,
        trigger,
        remove;
    listen = function( key, fn ){
        if(!clientList[key]){
            clientList[key]=[]
        }
        clientList[key].push(fn)
    }
    trigger = function( ){
        var key = Array.prototype.shift.call(arguments)
            fns = clientList[key]
            if( !fns || fns.length===0){
                return false
            }
            for(var i=0;i<fns.length;i++){
                fns[i](arguments)
            }
    }
    remove = function( key, fn){

    }
    return{
        listen,
        trigger,
        remove
    }

})()